package com.yingxin.yxerp.module.organization.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.taobao.api.ApiException;
import com.yingxin.yxerp.module.organization.entity.Department;
import com.yingxin.yxerp.module.organization.vo.resp.DepartmentRespVo;

import java.util.List;

/**
 * 部门 服务类
 * @author fanchao
 * @since 2021-05-13
 */

public interface IDepartmentService extends IService<Department> {

    List<Department> listByIds(List<String> ids);

    List<Department> listByParentId(String parentId);

    Department getParentById(String id);

    void create(Department department, List<String> managerIds);

    void update(Department department, List<String> managerIds);

    void delete(Department dept);

    // 更新直属员工数量
    void updateDirectStaffCountByDeptId(String deptId);

    // 更新直属员工数量
    void updateDirectStaffCount();

    // 检查是否叶子节点
    void checkLeafDepartment(String id);

    List<DepartmentRespVo> listParentById(String id);

    /**
     * 同步部门档案 - 钉钉号
     */
    void synchronism() throws ApiException;

    /**
     * 根据 ding_dept_id 获取部门信息
     * @return
     */
    Department getDingDeptById(String dingDeptId);

    /**
     * 同步部门档案 - 微信企业号
     * @throws ApiException
     */
    void synchronismWeCom();

    /**
     * 根据 we_com_dept_id 获取部门信息
     * @return
     */
    Department getWeComDeptById(String weComDeptId);

    /**
     * 根据 deptIds 获取部门名称
     */
    String getByDeptIds( List<String> deptIds );

}
